import csv
import requests
from bs4 import BeautifulSoup

# (headers 的相关知识会在下节课详细讲解，可暂时忽略此处代码)
header = {
    'User-Agent': 'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.45Safari/537.36'
}

# 设置列表，用以存储每种食物的信息
food_lists = []

# 使用 for 循环遍历取值范围为 1~3 的数据
for i in range(1,4):
    # 使用 for 循环遍历取值范围为 1~3 的数据
    for j in range(1,4):
        # 设置要请求的网页链接
        url = "https://www.boohee.com/food/group/{}?page={}".format(i,j)
        # 请求网页 (设置 headers 部分可先记为固定格式，暂时不用理解)
        res = requests.get(url,headers=header)
        print(res.status_code)
        # 解析请求到的网页内容
        bs = BeautifulSoup(res.text,"html.parser")
        # 提取食物类别
        food_type = bs.find('div', class_='widget-food-list pull-right').find('h3').text
        # 搜索网页中所有包含食物信息的 Tag
        food_tag = bs.find_all("div",class_ = "text-box pull-left")

        # 使用 for 循环遍历搜索结果
        for info in food_tag:
            # 提取食物名
            food_name = info.find("a")["title"]
            # 提取食物热量
            food_heat = info.find("p").text
            # 提取食物链接
            food_web = info.find("a")["href"]

            # 将信息添加到字典中
            dict = {
                "食物类别":food_type,
                "食物名":food_name,
                "食物热量":food_heat,
                "食物链接":food_web
            }

            # 将每种食物的信息添加至列表中
            food_lists.append(dict)
            # 打印食物的信息
            print(dict)

# 新建 csv 文件，用以存储食物信息
with open("foods.csv","w",encoding = "utf-8",newline = "") as f:
    # 将文件对象转换成 DictWriter 对象
    writer = csv.DictWriter(f,["食物类别","食物名","食物热量","食物链接"])
    # 写入表头与数据
    writer.writeheader()
    writer.writerows(food_lists)